package com.chapter17.demo2;

/**
 * 线程让步:
 * 如果一个运行中的线程想要放弃执行的权力，那么可以调用Thread类的静态方法yield来通知线程调度器：
 * 本线程要让出对CPU的占用，此时线程调度器会选择另一个可运行的线程来执行，不过，调度器也可以忽略这个通知，比如当前就只有一个可运行线程。
 */
public class yieldThread {
    public static void main(String[] args) {
        Runnable task = ()->{
            for(int i=0;i<5;i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
            Thread.yield();
        };
        //创建了2个线程都执行task任务
        new Thread(task).start();
        new Thread(task).start();
        //可以看到线程0和线程1在交替执行，如果没有yield方法的调用，那么输出结果将不会这么整齐。
        //要注意的是，yield方法只是临时放弃当前线程的执行，并不代表该线程就不执行了，此时线程将转为可运行状态，在CPU可用的情况下，
        //线程调度器会根据调度算法选择一个可运行的线程来运行，也许下一刻暂停运行的线程又立即运行了。

    }
}
